Generally, a web service can be defined as any information sources or business processes that are conveniently made available for use by a network-connected client application or end-user. Hereinafter, “web service application” refers to computer code that, when executed, performs some work or application logic which is referred to as the “web service.” For example, a web service may output a country and state in response to an input postal zip code, where the executing code that performs the work to determine the output is the corresponding web service application. Web service applications typically consist of some combination of programming and data that are hosted by an application server, with processing of communications between a client and a web service application hosted by a web service platform.
A web service platform includes a server, which enables packaging, sending and receiving messages that conform to a suitable message framework, such as SOAP (Simple Object Access Protocol). SOAP is a lightweight protocol intended for exchanging structured information in a decentralized, distributed environment. SOAP defines the use of XML and relevant transport protocols to access services, objects, and servers in a platform-independent manner, thereby promoting interoperability across platforms. SOAP Version 1.2 is described in a W3C Recommendation entitled “SOAP Version 1.2 Part 1: Messaging Framework”, which is incorporated by reference in its entirety for all purposes as if fully disclosed herein.
Web Services Description Language (WSDL) is an Extensible Markup Language (XML) format for describing web services as a set of endpoints operating on messages containing either document-oriented or procedure-oriented information. The operations and messages associated with a web service are described abstractly using WSDL, and then bound to a particular network protocol and message format to define an endpoint. A WSDL representation of a web service typically includes information about available operations and expected input and output message structures. A document described as Version 1.1 of Web Services Description Language is available from the World Wide Web Consortium (W3C). WSDL 1.1 is incorporated by reference in its entirety for all purposes as if fully set forth herein.
Descriptions of web services are commonly published in Universal Description, Discovery, and Integration (UDDI) registries, from which they are available for metadata querying, retrieval and interpretation by a potential web service client. A collection of documents described as UDDI Version 3 Specification is available from the OASIS (Organization for the Advancement of Structured Information Standards) UDDI Specifications Technical Committee. The collection of documents is currently described as including (1) UDDI Version 3.0 Features List; (2) UDDI Version 3.0; (3) UDDI Version 3.0 XML Schema; (4) UDDI Version 3.0 WSDL Service Interface Descriptions; all of which are incorporated by reference in their entirety for all purposes as if fully set forth herein. UDDI Version 3.0 provides a specification for building flexible, interoperable XML web services registries that are useful in private as well as public deployments of web services, and offers clients and application developers a comprehensive and complete blueprint of a description and discovery foundation for a diverse set of web services architectures.
By discovering and digesting a WSDL representation of a web service, a client formulates appropriate SOAP messages, and thereby invokes the operations (web services) on the web service server during runtime. The client-constructed SOAP messages should adhere to the XML document structures outlined in the WSDL representation. This XML structure is often denoted or referenced in a WSDL representation using one or more XML schema definitions. The WSDL representation may contain definitions on a request SOAP header, a request SOAP body (e.g., a business XML document), a response SOAP header, and a response SOAP body, for both RPC and document invocation paradigms.
A web service application may be bombarded by many incoming messages from clients, each of which may or may not result in an actual web service invocation. The web service application can only process SOAP request messages having correct structures with respect to their respective schema definitions referenced in associated WSDL representations. However, the various web services platforms that are presently available (e.g., Apache SOAP, J2EE (JAX-RPC, JAXM), and Oracle SOAP), do not implement message validation logic. As a result, web service applications may waste computational resources attempting to process invalid messages and often asynchronously respond with an error message to the requesting client.
To make up for the lack of validation in the platform domain, a web service application situated behind the web services platform may conduct some degree of XML structure validation and respond with errors whenever pertinent anomalies occur, as mentioned. However, application level validation is inherently insufficient because such validation processing examines business documents, which are carried as the body of a SOAP message, for their structural integrity while remaining oblivious to the rest of the XML structures in SOAP messages, such as the SOAP header. Furthermore, application level validation processing is a distinct, disjunct, and asynchronous processing step apart from the step of receiving the SOAP message at the web services server. Consequently, it would not be feasible for the web services server to notify clients of any malformations on SOAP XML structures in a synchronous manner. Still further, by delaying the XML structure validation to a later processing step at the application level, valuable processing resources, such as storage, CPU cycles, runtime, memories, and the like, are squandered.
Based on the foregoing, there is a general need for improved web service message processing. In addition, there is a more specific need for improved runtime validation of web service message structures.